package fr.syntheses.blog.Model.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;


import fr.syntheses.blog.beans.Categorie;

public class CategorieDAO extends ModeleDAO {


	

		Logger log = Logger.getLogger(CategorieDAO.class);

		// variables
		Connection cnx = null;
		ResultSet resultat= null;
		String requeteString=null;
		private static List<Categorie> listeCategories;
		PreparedStatement requete = null;

		/**
		 * Cette methode permet de lister les categories
		 * @return 
		 */
		public List<Categorie> listerCategorie() {


			log.debug("Entering in listerArticle()");


			listeCategories = new ArrayList<Categorie>();

			Categorie categorie = null;

			try {
				// open connection

				cnx = super.getConnection();

				// requete select * from Utilisateur whr

				requeteString = "SELECT * FROM categorie WHERE 1 ORDER BY Categorie";

				// statement
				requete = cnx.prepareStatement(requeteString);

				resultat = requete.executeQuery();
				// on qtoke le resultat dans une liste
				if(resultat!=null)
				{
					while(resultat.next())
					{

						// On effectue le mapping des attributs avec les champs de la table SQL
						categorie=mapperCategorie(resultat);

						// On ajoute l'objet a la liste des clients
						listeCategories.add((Categorie)categorie);
					}
				}
			}
			catch(Exception e)
			{
				log.debug("Erreur dans la requete dans la classe articleDAO ");
			}
			finally
			{
				try
				{
					// Fermeture de la connexion
					if(resultat!=null)
					{
						GestionBaseDeDonnees.closeResulset(resultat);
					}
					if(requete!=null)
					{
						GestionBaseDeDonnees.closeRequest(requete);
					}
					if(cnx!=null)
					{
						GestionBaseDeDonnees.closeConnection(cnx);
					}
				}
				catch(Exception ex)
				{
					log.debug("Erreur lors de la fermeture de la connexion avec la base de donn�es dans la classe article");
				}	
			}

			// Retourner la liste des articles
			return listeCategories;
		}


		// MAPPER article ========================================================== //



		private Categorie mapperCategorie(ResultSet resultat) {
			Categorie categorie= new Categorie();

			try {
				if (resultat.getString("Id") == null)
				{
					categorie.setId(0);
				}
				else {

				categorie.setId(resultat.getInt("Id"));
				}


				if (resultat.getString("Categorie") == null) {
					categorie.setCategorie("");
				} else {
					categorie.setCategorie(resultat.getString("Categorie"));
				}


				
			} catch (Exception e) {
				// TODO: handle exception
			}
			log.debug("in mapper exit with utilisateur" + categorie);
			return categorie;
		}


























		public void create() {

		}

		public void read() {

		}

		public void update() {

		}

		public void delete() {

		}





	}


